home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / AdobeExamples / NX_Text / hdshowaux.m < prev    next >
Encoding:
Text File  |  1992-12-19  |  4.4 KB  |  158 lines

  1.  
  2. /*
  3.  * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
  4.  *
  5.  * (b)  If this Sample Code is distributed as part of the Display PostScript
  6.  *    System Software Development Kit from Adobe Systems Incorporated,
  7.  *    then this copy is designated as Development Software and its use is
  8.  *    subject to the terms of the License Agreement attached to such Kit.
  9.  *
  10.  * (c)  If this Sample Code is distributed independently, then the following
  11.  *    terms apply:
  12.  *
  13.  * (d)  This file may be freely copied and redistributed as long as:
  14.  *    1) Parts (a), (d), (e) and (f) continue to be included in the file,
  15.  *    2) If the file has been modified in any way, a notice of such
  16.  *      modification is conspicuously indicated.
  17.  *
  18.  * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
  19.  *    Adobe Systems Incorporated.
  20.  * 
  21.  * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
  22.  *    CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
  23.  *    AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
  24.  *    ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
  25.  *    OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
  26.  *    WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
  27.  *    WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
  28.  *    DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
  29.  *    FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
  30.  *    OF THIRD PARTY RIGHTS.
  31.  */
  32.  
  33. /*
  34.    filename    : hdshowaux.m
  35.    date created    : 22-oct-90
  36.    last updated    : 12-dec-90
  37.    author        : ross a jeynes
  38.    porter        : ken r fromm
  39.    purpose    : auxilary routines to fill the show structure
  40. */
  41.  
  42. #import "hdshowany.h"
  43. #import <stdlib.h>
  44. #import <string.h>
  45.  
  46. void ResetShowStruct(ShowStruct *show)
  47. {
  48.     show->text = NULL;
  49.     memset((void *) show->attr, 0, show->textlen * sizeof(unsigned int));
  50.  
  51.     show->textlen = 0;
  52.  
  53.     show->prkernlen = 0;
  54.     show->vkernlen = 0;
  55.     show->absmovlen = 0;
  56.     show->spaceadjlen = 0;
  57.     show->trackkernlen = 0;
  58. }
  59.  
  60. void AllocShowStruct(ShowStruct *show)
  61. {
  62.     show->textmax        = 128;
  63.  
  64.     show->prkernmax        = 16;
  65.     show->vkernmax        = 16;
  66.     show->absmovmax    = 16;
  67.     show->spaceadjmax    = 16;
  68.     show->trackkernmax    = 16;
  69.  
  70.     show->attr            = (unsigned int *) malloc(show->textmax * sizeof(unsigned int));
  71.  
  72.     show->prkern            = (NXCoord *) malloc(show->prkernmax * sizeof(NXCoord));
  73.     show->vkern            = (NXCoord *) malloc(show->vkernmax * sizeof(NXCoord));
  74.     show->absmov        = (NXPoint *) malloc(show->absmovmax * sizeof(NXPoint));
  75.     show->spaceadj        = (NXCoord *) malloc(show->spaceadjmax * sizeof(NXCoord));
  76.     show->trackkern        = (NXCoord *) malloc(show->trackkernmax * sizeof(NXCoord));
  77.  
  78.     ResetShowStruct(show);
  79. }
  80.  
  81. void FreeShowStruct(ShowStruct *show)
  82. {
  83.     free(show->attr);
  84.  
  85.     free(show->prkern);
  86.     free(show->vkern);
  87.     free(show->absmov);
  88.     free(show->spaceadj);
  89.     free(show->trackkern);
  90. }
  91.  
  92. void AddString(ShowStruct *show, char *string)
  93. {
  94.     show->textlen = strlen(string);
  95.     show->text = string;
  96.     if (show->textlen >= show->textmax)
  97.     {
  98.         show->textmax = show->textmax * 2;
  99.             show->attr = (unsigned int *) realloc(show->attr, show->textmax * sizeof(unsigned int));    }
  100. }
  101.  
  102. void AddMoveto(ShowStruct *show, int index, NXCoord x, NXCoord y)
  103. {
  104.     if (show->absmovlen >= show->absmovmax)
  105.     {
  106.         show->absmovmax = show->absmovmax * 2;
  107.             show->absmov = (NXPoint *) realloc(show->absmov,
  108.                         show->absmovmax * sizeof(NXPoint));
  109.     }    
  110.  
  111.     show->attr[index] |= SA_ABSMOV;
  112.     show->absmov[show->absmovlen].x = x;
  113.     show->absmov[show->absmovlen].y = y;
  114.     show->absmovlen++;
  115. }
  116.  
  117. void AddPairKern(ShowStruct *show, int index, NXCoord value)
  118. {
  119.     if (show->prkernlen >= show->prkernmax)
  120.     {
  121.         show->prkernmax = show->prkernmax * 2;
  122.             show->prkern = (NXCoord *) realloc(show->prkern,
  123.                     show->prkernmax * sizeof(NXPoint));
  124.     }    
  125.  
  126.     show->attr[index] |= SA_PRKERN;
  127.     show->prkern[show->prkernlen] = value;
  128.     show->prkernlen++;
  129. }
  130.  
  131. void AddTracking(ShowStruct *show, int index, NXCoord value)
  132. {
  133.     if (show->trackkernlen >= show->trackkernmax)
  134.     {
  135.         show->trackkernmax = show->trackkernmax * 2;
  136.             show->trackkern = (NXCoord *) realloc(show->trackkern,
  137.                     show->trackkernmax * sizeof(NXPoint));
  138.     }    
  139.  
  140.     show->attr[index] |= SA_TRACKADJ;
  141.     show->trackkern[show->trackkernlen] = value;
  142.     show->trackkernlen++;
  143. }
  144.  
  145. void AddSpaceAdj(ShowStruct *show, int index, NXCoord value)
  146. {
  147.     if (show->spaceadjlen >= show->spaceadjmax)
  148.     {
  149.         show->spaceadjmax = show->spaceadjmax * 2;
  150.             show->spaceadj = (NXCoord *) realloc(show->spaceadj,
  151.                     show->spaceadjmax * sizeof(NXPoint));
  152.     }    
  153.  
  154.     show->attr[index] |= SA_SPACEADJ;
  155.     show->spaceadj[show->spaceadjlen] = value;
  156.     show->spaceadjlen++;
  157. }
  158.